/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package co.edu.senaclem.aspera.vista;

import co.edu.senaclem.logica.InstructorLogicaLocal;
import co.edu.senaclem.logica.PersonalLogicaLocal;
import co.edu.senaclem.logica.UsuariosLogicaLocal;
import co.edu.senaclem.modelo.Instructor;
import co.edu.senaclem.modelo.Personal;
import java.io.IOException;
import java.io.Serializable;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

/**
 *
 * @author DILOVE
 */
@ManagedBean(name = "instructorDatosVista")
@ViewScoped
public class InstructorDatosVista implements Serializable {

    @EJB
    private InstructorLogicaLocal instructorLogica;

    @EJB
    private UsuariosLogicaLocal usuariosLogica;

    @EJB
    private PersonalLogicaLocal personalLogica;

    private String cmbTipoInstructor;
    private String txtIdentificacion;
    private String txtNombre;
    private String txtApellido;
    private String txtCorreo;
    private String txtTelefono;
    private String txtClave;

    public InstructorDatosVista() {
    }

    /**
     * @return the instructorLogica
     */
    public InstructorLogicaLocal getInstructorLogica() {
        return instructorLogica;
    }

    /**
     * @param instructorLogica the instructorLogica to set
     */
    public void setInstructorLogica(InstructorLogicaLocal instructorLogica) {
        this.instructorLogica = instructorLogica;
    }

    public void modificar_action() {
        //System.out.println("Modificar Instructor");
        if (usuariosLogica.validarSesion()) {
            try {
                Instructor instructor = new Instructor();
                Long documento = Long.parseLong(txtIdentificacion);
                Personal miPersonal = new Personal();
                miPersonal.setDocumento(documento);
                miPersonal.setNombre(txtNombre.toUpperCase());
                miPersonal.setApellido(txtApellido.toUpperCase());
                miPersonal.setCorreo(txtCorreo.toUpperCase());
                miPersonal.setTelefono(txtTelefono.toUpperCase());
                //miPersonal.setClave(passClave.getValue().toString());

                personalLogica.modificar(miPersonal);

                instructor.setDocumento(miPersonal);
                instructor.setTipo(cmbTipoInstructor);

                instructorLogica.modificar(instructor);

                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Mensaje: ", "Sus datos se han modificado Con Éxito"));
            } catch (NumberFormatException nfe) {
                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error: ", "El Documento Debe Ser Numérico!"));
            } catch (Exception e) {
                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error: ", e.getMessage()));
            }
        } else {
            try {
                FacesContext.getCurrentInstance().getExternalContext().redirect("../SesionInvalida.xhtml");
            } catch (IOException ex) {
                Logger.getLogger(CoordinadorVista.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }

    /**
     * @return the cmbTipoInstructor
     */
    public String getCmbTipoInstructor() {
        return cmbTipoInstructor;
    }

    /**
     * @param cmbTipoInstructor the cmbTipoInstructor to set
     */
    public void setCmbTipoInstructor(String cmbTipoInstructor) {
        this.cmbTipoInstructor = cmbTipoInstructor;
    }

    /**
     * @return the txtIdentificacion
     */
    public String getTxtIdentificacion() {
        if (usuariosLogica.validarSesion()) {
            try {
                txtIdentificacion = (String) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("usuario");
                Instructor instructor = instructorLogica.consultarPorId(Long.parseLong(txtIdentificacion));

                txtNombre = instructor.getDocumento().getNombre();
                txtApellido = instructor.getDocumento().getApellido();
                txtTelefono = instructor.getDocumento().getTelefono();
                txtCorreo = instructor.getDocumento().getCorreo();
                cmbTipoInstructor = instructor.getTipo();

            } catch (Exception ex) {
                Logger.getLogger(AprendizVista.class.getName()).log(Level.SEVERE, null, ex);
            }
        } else {
            try {
                FacesContext.getCurrentInstance().getExternalContext().redirect("../SesionInvalida.xhtml");
            } catch (IOException ex) {
                Logger.getLogger(CoordinadorVista.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        return txtIdentificacion;
    }

    /**
     * @param txtIdentificacion the txtIdentificacion to set
     */
    public void setTxtIdentificacion(String txtIdentificacion) {
        this.txtIdentificacion = txtIdentificacion;
    }

    /**
     * @return the txtNombre
     */
    public String getTxtNombre() {
        return txtNombre;
    }

    /**
     * @param txtNombre the txtNombre to set
     */
    public void setTxtNombre(String txtNombre) {
        this.txtNombre = txtNombre;
    }

    /**
     * @return the txtApellido
     */
    public String getTxtApellido() {
        return txtApellido;
    }

    /**
     * @param txtApellido the txtApellido to set
     */
    public void setTxtApellido(String txtApellido) {
        this.txtApellido = txtApellido;
    }

    /**
     * @return the txtCorreo
     */
    public String getTxtCorreo() {
        return txtCorreo;
    }

    /**
     * @param txtCorreo the txtCorreo to set
     */
    public void setTxtCorreo(String txtCorreo) {
        this.txtCorreo = txtCorreo;
    }

    /**
     * @return the txtTelefono
     */
    public String getTxtTelefono() {
        return txtTelefono;
    }

    /**
     * @param txtTelefono the txtTelefono to set
     */
    public void setTxtTelefono(String txtTelefono) {
        this.txtTelefono = txtTelefono;
    }

    /**
     * @return the txtClave
     */
    public String getTxtClave() {
        return txtClave;
    }

    /**
     * @param txtClave the txtClave to set
     */
    public void setTxtClave(String txtClave) {
        this.txtClave = txtClave;
    }

}
